<?php
/**
 * @see ZendX_JQuery_View_Helper_UiWidget
 */
require_once "ZendX/JQuery/View/Helper/UiWidget.php";

/**
 * Помощник вида, реализующий выбор материалов сайта через UI Dialog и DataGrid
 * 
 * @category Phorm
 * @package JQuery_View_Helper
 * @name /Phorm/JQuery/View/Helper/SelectResource.php
 * @copyright phorm.ru
 * @since 02.01.2012
 * @author vladimir@kachalov.net
 */

class Phorm_JQuery_View_Helper_SelectResource extends ZendX_JQuery_View_Helper_UiWidget {
	
	/**
	 * Рисуем кнопку
	 *
	 * @param string $id Id HTML-элемента
	 * @param mixed $value Значение элемента
	 * @param array $params Массив параметров, передаваемых в JS-скрипт инициализации UI-компоненты
	 * @param array $attribs Массив атрибутов HTML-элемента
	 * @return string
	 */
    
	public function selectResource($id, $value = null, array $params = array(), $attribs = null) {
		
		$translate = $this->view->translate()->getTranslator();
		
		$id_button   = $id . '_button';
		
		$hiddenname = isset($params['multiple']) && $params['multiple']==1 ? $id.'[]' : $id;
		
		if(is_string($value)) $value = array($value);
		
		/**
		 * Определяем параметры JQueryUI Dialog
		 */
		
		$dialog_params = array(
			'title' => $translate->_('Выбор материалов сайта')
		);
		
		/**
		 * Добавляем кнопочку, инициализирующую диалог с DataGrid
		 * При загрузке диалога устанавливаем в него идентификатор кнопки, по которому из грида будем искать место для вставки записей
		 * @see /application/configs/resources/grids.xml[section=select]
		 */
		
		$button = $this->view->Button($id_button, $translate->_('Выбрать'));

		$js = '$("#'.$id_button.'").click(function(){
					$("<iframe src=\"'.$this->view->BaseUrl().'/control/resource/index/section/select/\"></iframe>").load(function(){ 
						$(this).contents().find("body").attr("rel","'.$id_button.'");
					}).phormDialog();
				})';
        $this->jquery->addOnLoad($js);
        
        /**
		 * Формируем скрытое поле, выполняющее роль JS-шаблона и Устанавливаем значения
		 */
		
		$xhtml  = '<ul class="ui-phorm-multi-list">' . PHP_EOL;
		
		if(count($value)>0) {
			$Resource = new Phorm_Resource();
			foreach ($value as $resourceid) {
				if($ResourceInfo = $Resource->getResourceBaseInfo($resourceid)) {
					$xhtml .= '<li class="ui-widget-content">' . 
									'<span class="title"><a href="#">'.$ResourceInfo['resourcename'].'</a></span>' .
									'<input type="hidden" name="'.$hiddenname.'" value="'.$ResourceInfo['resourceid'].'" />' .
			        				'<a href="#" class="delete ui-corner-all ui-button ui-state-default" title="'.$translate->_('Удалить').'"><span class="ui-icon ui-icon-close"></span></a>' .
			        		  '</li>' . PHP_EOL;
				}
			}
		}

        $xhtml .= '<li class="hidden ui-widget-content">' . 
						'<span class="title"></span>' .
						'<input type="hidden" name="'.$hiddenname.'" disabled="disabled" />' .
        				'<a href="#" class="delete ui-corner-all ui-button ui-state-default" title="'.$translate->_('Удалить').'"><span class="ui-icon ui-icon-close"></span></a>' .
        				'<div class="clear"></div>' .
        		  '</li>' . PHP_EOL;
        $xhtml .= '</ul>' . PHP_EOL;
        
        /**
         * Вешаем событие на кнопки удаления
         */
        
        $js = '$("#'.$id_button.'").next("ul").find("li .delete").on("click",function(){ 
					if(confirm("'.$translate->_('Удалить').'?")) $(this).parent("li").remove();
					return false; 
				});';
        
		$this->jquery->addOnLoad($js);
        
        /**
         * Сортировка выбранных элементов
         */
        
        if (isset($params['sortable']) && $params['sortable']==1 && isset($params['multiple']) && $params['multiple']==1) {
			$js = '$("#'.$id_button.'").next("ul").sortable().find("li").css({cursor:"move"});';
			$this->jquery->addOnLoad($js);
		}
        
        /**
		 * Возвращаем кнопку и текущие элементы
		 */
       
		return $button . $xhtml;
		
	}
	
}
